//package jwebtest.rpc.rpc.netty;
//
//import io.netty.bootstrap.ServerBootstrap;
//import io.netty.channel.ChannelFuture;
//import io.netty.channel.ChannelHandlerContext;
//import io.netty.channel.ChannelInitializer;
//import io.netty.channel.ChannelOption;
//import io.netty.channel.EventLoopGroup;
//import io.netty.channel.SimpleChannelInboundHandler;
//import io.netty.channel.nio.NioEventLoopGroup;
//import io.netty.channel.socket.SocketChannel;
//import io.netty.channel.socket.nio.NioServerSocketChannel;
//
//import java.io.IOException;
//
//import jwebtest.rpc.rpc.IRpcFramework;
//
//public class NettyRPC extends IRpcFramework {
//	private RpcHandler rpcHandler;
//
//	public NettyRPC(int port) throws IOException {
//		super(port);
//		rpcHandler = new RpcHandler();
//		startScoket();
//	}
//
//	public NettyRPC(String postUrl, int port, int timeout) {
//		super(postUrl, port, timeout);
//	}
//
//	private void startScoket() throws IOException {
//		EventLoopGroup bossGroup = new NioEventLoopGroup();
//		EventLoopGroup workerGroup = new NioEventLoopGroup();
//		try {
//			ServerBootstrap bootstrap = new ServerBootstrap();
//			bootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer<SocketChannel>() {
//				@Override
//				public void initChannel(SocketChannel channel) throws Exception {
//					channel.pipeline().addLast(rpcHandler); // 处理RPC请求
//				}
//			}).option(ChannelOption.SO_BACKLOG, 128).childOption(ChannelOption.SO_KEEPALIVE, true);
//			String host = array[0];
//			int port = Integer.parseInt(array[1]);
//
//			ChannelFuture future = bootstrap.bind(host, port).sync();
//			System.out.println("server started on port " + port);
//
//			if (serviceRegistry != null) {
//				serviceRegistry.register(serverAddress); // 注册服务地址
//			}
//
//			future.channel().closeFuture().sync();
//		} finally {
//			workerGroup.shutdownGracefully();
//			bossGroup.shutdownGracefully();
//		}
//	}
//
//	@Override
//	public boolean addExport(Object server) {
//		// TODO Auto-generated method stub
//		return false;
//	}
//
//	@Override
//	public <T> T reference(Class<T> _interface) {
//		// TODO Auto-generated method stub
//		return null;
//	}
//
//	// ===============================================================================
//
//	private class RpcHandler extends SimpleChannelInboundHandler<RpcRequest> {
//
//		@Override
//		protected void channelRead0(ChannelHandlerContext arg0, RpcRequest arg1) throws Exception {
//			// TODO Auto-generated method stub
//
//		}
//
//	}
//
//	public class RpcRequest {
//
//		private String requestId;
//		private String className;
//		private String methodName;
//		private Class<?>[] parameterTypes;
//		private Object[] parameters;
//
//		public String getRequestId() {
//			return requestId;
//		}
//
//		public void setRequestId(String requestId) {
//			this.requestId = requestId;
//		}
//
//		public String getClassName() {
//			return className;
//		}
//
//		public void setClassName(String className) {
//			this.className = className;
//		}
//
//		public String getMethodName() {
//			return methodName;
//		}
//
//		public void setMethodName(String methodName) {
//			this.methodName = methodName;
//		}
//
//		public Class<?>[] getParameterTypes() {
//			return parameterTypes;
//		}
//
//		public void setParameterTypes(Class<?>[] parameterTypes) {
//			this.parameterTypes = parameterTypes;
//		}
//
//		public Object[] getParameters() {
//			return parameters;
//		}
//
//		public void setParameters(Object[] parameters) {
//			this.parameters = parameters;
//		}
//	}
//}
